package com.sigmatrix.h5.dao.impl;

import java.util.List;
import java.util.Map;

import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.stereotype.Repository;

import com.alibaba.fastjson.JSONObject;
import com.sigmatrix.h5.dao.CodeCirculationDao;
import com.sigmatrix.h5.entity.CodeCirculation;
import com.sigmatrix.h5.utils.SessionUtils;
import com.sigmatrix.sc.mongo.common.dao.MongoDaoImpl;

/**
 * 
 *@ClassName: CodeCirculationDaoImpl
 *@Description: 码流转记录
 *@author MH
 *@date 2017年11月30日 上午9:42:25
 */
@Repository
public class CodeCirculationDaoImpl extends MongoDaoImpl<CodeCirculation> implements CodeCirculationDao {
	
	Logger logger = Logger.getLogger(this.getClass());
	
	@Autowired
	private MongoTemplate mongoTemplate;
	
	@Override
	public List<CodeCirculation> select(CodeCirculation t) {
		return select(t, null);
	}

	@Override
	public List<CodeCirculation> select(CodeCirculation t, Map<String, String> order) {
		String collectionName = SessionUtils.getEseCode()+entityClass.getSimpleName();
		logger.info(String.format("mongo查询码流转记录列表参数：%s，表名：%s", JSONObject.toJSONString(t),collectionName));
		List<CodeCirculation> list = mongoTemplate.find(where(t, order), entityClass, collectionName);
		logger.info(String.format("mongo查询码流转记录列表结果：%s", JSONObject.toJSONString(list)));
		return list;
	}

	@Override
	public CodeCirculation selectOne(CodeCirculation t) {
		return selectOne(t, null);
	}

	@Override
	public CodeCirculation selectOne(CodeCirculation t, Map<String, String> order) {
		String collectionName = SessionUtils.getEseCode()+entityClass.getSimpleName();
		logger.info(String.format("mongo查询码流转记录单条记录参数：%s，表名：%s", JSONObject.toJSONString(t),collectionName));
		CodeCirculation codeCirculation = mongoTemplate.findOne(where(t, order), entityClass, collectionName);
		logger.info(String.format("mongo查询码流转记录单条记录结果：%s", JSONObject.toJSONString(codeCirculation)));
		return codeCirculation;
	}

	@Override
	public void insert(CodeCirculation t) {
		String collectionName = SessionUtils.getEseCode()+entityClass.getSimpleName();
		logger.info(String.format("mongo保存码流转记录参数：%s，表名：%s", JSONObject.toJSONString(t),collectionName));
		mongoTemplate.insert(t, collectionName);
	}

	@Override
	public String getTableName(String esecode) {
		
		return esecode+entityClass.getSimpleName();
	}
	
	
	
}
